home *** CD-ROM | disk | FTP | other *** search
- This Frequently Asked Questions file is edited in -*- indented-text -*- mode.
-
- If you are viewing this text in a GNU Emacs Buffer, you can type "M-2 C-x $" to
- get an overview of just the questions. Then, when you want to look at the text
- of the answers, just type "C-x $".
-
- To search for a question numbered XXX, type "M-C-s ^XXX:", followed by a C-r if
- that doesn't work, then type ESC to end the search.
-
- 1: How do I convert all of my Csh aliases over to Bash aliases?
- Bash uses a different syntax to support aliases than Csh does. The
- details can be found in the documentation. We have provided a shell
- script which does most of the work of conversion for you; this
- script can be found in ./examples/alias-conv.sh. Here is how you
- use it:
-
- Start Csh in the normal way for you. (e.g., "csh")
-
- Pipe the output of "alias" through "alias-conv.sh", saving the
- results into "bash_aliases":
-
- alias | alias-conv.sh >.bash_aliases
-
- Edit "bash_aliases" carefully reading through any created
- functions. You will need to change the names of Csh specific
- variables (like $cwd) to the Bash equivalents (like $PWD). You
- will also need to remove recursive references to commands which
- are defined as functions. For example, the Csh alias:
-
- alias cd 'cd \!*;echo $cwd'
-
- is converted to the Bash function:
-
- cd ()
- {
- cd $*;
- echo $cwd
- }
-
- This function contains a self-pointing reference to "cd", which
- should be changed to use the "builtin" version. It also uses
- the Csh variable `$cwd' which has an equivalent in Bash.
- Precede the recursive reference with the word "builtin", and
- change the name of the variable:
-
- cd () { builtin cd $*; echo $PWD }
-
- Merge the edited file into your ~/.bashrc.
-
- 2: Background jobs have staggered output, as if there was no CR before the LF.
- This is a result of bash using the BSD-style tty driver on Ultrix. The BSD
- driver ties input and output carriage return translation together with the
- CRMOD bit. (The CRMOD bit causes CR->LF translation on input and LF->CRLF
- translation on output.) Unless the CRMOD bit is cleared, it is impossible
- to get a literal ^M in an input line. Unfortunately, one of the effects of
- clearing it is the loss of output processing you've observed.
-
- The Ultrix Posix-style tty driver can't be used because it has serious
- problems with losing typeahead when ICANON is switched on and off. These
- characters seem to reappear later without warning, usually when a
- program that uses the BSD-style ioctls turns on CBREAK (e.g., `more').
-
- 3: Bash's "test" different from "/bin/test"? ([ ! x -o x ] -> false)
- Bash's builtin "test" implements the Posix.2 spec, which can be
- summarized as follows (the wording is due to David Korn):
-
- Here is the set of rules for processing test arguments.
-
- 0 Args: False
- 1 Arg: True iff argument is not null.
- 2 Args: If first arg is !, True iff second argument is null.
- If first argument is unary, then true if unary test is true
- Otherwise error.
- 3 Args: If second argument is a binary operator, do binary test of $1 $3
- If first argument is !, negate two argument test of $2 $3
- Otherwise error.
- 4 Args: If first argument is !, negate three argument test of $2 $3 $4.
- Otherwise unspecified
- 5 or more Args: unspecified. (Historical shells would used their
- current algorithm).
-
- The operators -a and -o are considered binary operators for the purpose
- of the 3 Arg case.
-
- As you can see, the test becomes (not (x or x)), which is false.
-
- 4: Completion listings can differ from `ls' in the number of columns output.
- This can happen because `ls' calls stat () on every file before
- listing the output, while GNU Readline only calls stat () on the
- files when they are being printed. This means that `ls' knows how
- many characters will be added to each filename in advance, and can
- accurately calculate the maximum length, while Bash must assume that
- each filename will have characters added to it.
-
- 5: Bash crashes when I do "cd".
- If you have `cd' defined as a function, it is likely that the
- function is recursively calling itself. See the answer to question
- 1 above.
-
- 6: Why does Bash sometimes say "Broken pipe"?
- If a sequence of commands appear in a pipeline, and one of the
- reading commands finishes before the writer has finished, the writer
- receives a SIGPIPE signal. Many other shells special-case SIGPIPE as
- an exit status in the pipeline and do not report it. For example,
- in:
-
- ps -aux | head
-
- `head' can finish before `ps' writes all of its output. In that case,
- Bash will print `Broken pipe' to stderr on behalf of the `ps'
- command.
-
- 7: How can I use `!' to reinvoke a command starting with a digit?
- If you had issued a command such as `8086engine foo', and then at a
- later time wished to reinvoke the command, typing `!80' would probably
- not work since Bash would think you meant the 80'th command in the
- history, not the command starting with `80'. You can type `!?80',
- which says to re-execute the most recent command containing `80'.
-
- Questions About Input Line Editing:
-
- 1: What do things like this mean: C-h, M-C-a, RET, etc.?
-
- C-a means press the "a" key while holding down the "Control" key. The
- ASCII code this sends will generally be the value that would be sent by
- pressing just "a" minus 96 or 64. Either way it will be a number from 0
- to 31.
-
- M-a means press the "a" key while holding down the "Meta" key. The
- ASCII code this sends is the sum of the ASCII code that would be sent by
- pressing just "a" and 128.
-
- M-C-a means press the "a" key while holding down both the "Control" key
- and the "Meta" key. C-M-a is a synonym for M-C-a.
-
- * RET means press the "Return" key. RET is the same as C-m. This sends
- ASCII code 13.
-
- * LFD means press the "Linefeed" key. LFD is also the same as C-j. This
- sends ASCII code 10. Under Unix, ASCII code 10 is more often called
- "Newline".
-
- * DEL means press the "Delete" key. DEL is the same as C-?. This sends
- ASCII code 127. (WARNING: It is a misnomer to call C-? a "control" key,
- since 127 has both bits 6 and 7 turned ON, and the rule for control keys
- is that they have 6 and 7 turned OFF. Also, on very few keyboards does
- Control-? generate ASCII code 127. In fact, Control-? (which is
- actually Control-Shift-/) is more likely to generate C-_, ASCII code
- 31!)
-
- * ESC means press the "Escape" key. ESC is the same as C-[. This sends
- ASCII code 27.
-
- * SPC means press the "Space" key. This send ASCII code 32.
-
- * TAB means press the "Tab" key. TAB is the same as C-i. This send ASCII
- code 9.
-
- For C-@ and C-^, usually you don't have to hold down the shift key and you
- can type Control-2 or Control-6 instead. For C-_, you may have to hold
- down the shift key, typing Control-Shift-Hyphen. C-@ can often be
- generated by typing Control-Space. C-@ is often called the NUL character,
- and has ASCII value 0. C-_ can often be generated by typing Control-7 or
- Control-/. Try Control with all of the digits on your keyboard to see
- what gets generated.
-
- To read more about this online, type "C-h i m emacs RET m characters
- RET", and also "C-h i m emacs RET m keys RET".
-
- 2: What do you mean when you write things like this: type "ESC a"?
-
- I will enclose key sequences that are longer than one key inside double
- quotes. These notations refer to single key strokes (some with
- modifiers):
-
- C-x, M-x, M-C-x
- RET, LFD, DEL, ESC, SPC, TAB
-
- I separate these from other keys within double quotes by spaces. Any
- real spaces that I write inside double quotes can be ignored, only SPC
- means press the space key. All other characters within double quotes
- represent single keys (some shifted).
-
- 3: What if I don't have a Meta key?
-
- Instead of typing M-a, you can type "ESC a" instead. In fact, Emacs
- converts M-a internally into "ESC a" anyway (depending on the value of
- meta-prefix-char).
-
- 4: What if I don't have an Escape key?
-
- Type C-[ instead. This should send ASCII code 27 just like an Escape
- key would.
-
- 5: What does "M-x command" mean?
-
- "M-x command" means type M-x, then type the name of the command, then
-
-
- Local Variables:
- eval: (set-selective-display 2)
- End:
-